package pe.com.csi.pm.regexiv.dao;

import java.util.ArrayList;
import java.util.List;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;

import pe.com.csi.pm.regexiv.bean.Tramo;
import pe.com.csi.pm.regexiv.db.DaoManager;
import pe.com.csi.pm.regexiv.interfaces.TramoDAO;
import pe.com.csi.pm.regexiv.util.Numero;

public class TramoDAOImpl implements TramoDAO {

	private Context context;

	public TramoDAOImpl(Context context) {
		this.context = context;
	}

	@Override
	public int registrarTramo(Tramo tramo) {
		System.out.println("entro daoimpl registrar");
		int rows = 0;
		DaoManager usdbh = new DaoManager(context);
		SQLiteDatabase db = usdbh.getWritableDatabase();
		try {

			db.beginTransaction();
			ContentValues valores = new ContentValues();
			valores.put("IDTMO", tramo.getIdTmo());
			valores.put("IDCCES", tramo.getIdCces());
			valores.put("NUMERORTA", tramo.getNumeroRta());
			valores.put("NOMBRETMO", tramo.getNombreTmo());
			valores.put("PINICIALTMO", tramo.getpInicialTmo());
			valores.put("PFINALTMO", tramo.getpFinalTmo());
			valores.put("LONGITUDTMO", tramo.getLongitudTmo());
			valores.put("ALTITUDTMO", tramo.getAltitudTmo());

			long pos = db.insert("TRAMO", null, valores);
			System.out.println("REGISTRADO TRAMO " + pos);
			if (pos == -1)
				rows = 0;
			else
				rows = 1;
			db.setTransactionSuccessful();
		} catch (SQLException e) {
			rows = 0;
			e.printStackTrace();
		} finally {
			db.endTransaction();
			db.close();
		}

		return rows;
	}

	@Override
	public List<Tramo> obtenerTramos() {
		List<Tramo> lstramos = new ArrayList<Tramo>();
		try {
			String sql = " SELECT IDTMO, IDCCES, NUMERORTA, NOMBRETMO, PINICIALTMO, PFINALTMO, LONGITUDTMO, ALTITUDTMO " + " FROM TRAMO ";
			System.out.println("entro a obtener tramos imple");
			DaoManager usdbh = new DaoManager(context);
			System.out.println("usdbh :" + usdbh);

			SQLiteDatabase db = usdbh.getReadableDatabase();
			System.out.println("db :" + db);
			Cursor c = db.rawQuery(sql, null);
			Tramo tramo;
			if (c.moveToFirst()) {
				do {
					long idTramo = !c.isNull(0) ? c.getLong(0) : 0;
					long idcces = !c.isNull(1) ? c.getLong(1) : 0;
					long idruta = !c.isNull(2) ? c.getLong(2) : 0;
					String nomtramo = !c.isNull(3) ? c.getString(3) : "";
					Double progi = !c.isNull(4) ? c.getDouble(4) : 0;
					Double progf = !c.isNull(5) ? c.getDouble(5) : 0;
					Double longitud = !c.isNull(6) ? c.getDouble(6) : 0;
					Double altitud = !c.isNull(7) ? c.getDouble(7) : 0;

					tramo = new Tramo();
					tramo.setIdTmo(idTramo);
					tramo.setNumeroRta(idruta);
					tramo.setNombreTmo(nomtramo);
					tramo.setpInicialTmo(progi);
					tramo.setpFinalTmo(progf);
					tramo.setLongitudTmo(longitud);
					tramo.setAltitudTmo(altitud);
					tramo.setIdCces(idcces);
					String pi=Numero.parseNumeroToString(tramo.getpInicialTmo());
					String pf=Numero.parseNumeroToString(tramo.getpFinalTmo());
					tramo.setEtiqueta(tramo.getNombreTmo()+" : "+ pi+" - "+pf);

					lstramos.add(tramo);

				} while (c.moveToNext());
			}
			c.close();
			db.close();
		} catch (Exception e) {
			lstramos = new ArrayList<Tramo>();
			e.printStackTrace();
		}
		return lstramos;

	}

	@Override
	public int eliminarAllTramos() {
		int rows = 0;
		DaoManager usdbh = new DaoManager(context);
		SQLiteDatabase db = usdbh.getWritableDatabase();
		try {
			db.beginTransaction();
			db.execSQL("DELETE FROM TRAMO");
			rows = 1;
			db.setTransactionSuccessful();
		} catch (Exception e) {
			rows = -1;
			e.printStackTrace();
		} finally {
			db.endTransaction();
			db.close();
		}
		return rows;
	}

}
